from xunter_utils.xunter_requests import ChromeClient

"""
方法二
做两次请求，先抓取登录请求，传入账号和密码，得到响应的Set-Cookie或token
再抓取请求数据得到需要抓取的数据
"""

class Login3Spider(ChromeClient):
    host = 'https://login3.scrape.center'

    def login(self, username: str, password: str) -> None:
        res = self.send_request_post(f'{self.host}/api/login',json={
            'username': username,
            'password': password,
        })
        #这里不能通过会话维持来保存token因为token一般放到响应体中会话维持的是维持响应头中的相关参数
        #需要得到token的值并且放到请求头中
        """
        看传递的参数确认是传入data还是json
        如果是Form Data  就传data
        如果是Request Payload  就传json
        """
        #先将得到的响应数据转成json格式 再通过key取'token'的值  最后通过拼接token的类型得到完整的Authorization值
        self.session.headers['Authorization'] = 'jwt ' + res.json()['token']


if __name__ == '__main__':
    client = Login3Spider()
    client.login('admin','admin')
    res = client.send_request('https://login3.scrape.center/api/book/?limit=18&offset=0')
    print(res.json())